package com.ruoyi.system.domain.xtkj;

import java.util.List;
import java.util.Optional;

/**
 * @author Administrator
 * @description 数据处理器 - 处理实际响应中的空值和数据类型转换
 * @data 2025/10/15 16:17
 */
public class DataProcessor {

    /**
     * 安全获取数值，处理空字符串和null值
     */
    public static Optional<Double> parseDoubleSafely(String value) {
        if (value == null || value.trim().isEmpty()) {
            return Optional.empty();
        }
        try {
            return Optional.of(Double.parseDouble(value.trim()));
        } catch (NumberFormatException e) {
            return Optional.empty();
        }
    }

    /**
     * 安全获取整数值
     */
    public static Optional<Integer> parseIntegerSafely(String value) {
        if (value == null || value.trim().isEmpty()) {
            return Optional.empty();
        }
        try {
            return Optional.of(Integer.parseInt(value.trim()));
        } catch (NumberFormatException e) {
            return Optional.empty();
        }
    }

    /**
     * 从RealData中提取指定字段的值
     */
    public static Optional<String> getRealDataValue(List<RealDataItem> realData, String fieldEName) {
        if (realData == null) {
            return Optional.empty();
        }
        return realData.stream()
                .filter(item -> fieldEName.equals(item.getDataFieldEName()))
                .map(RealDataItem::getValue)
                .findFirst();
    }

    /**
     * 从RealData中提取指定字段的数值
     */
    public static Optional<Double> getRealDataNumericValue(List<RealDataItem> realData, String fieldEName) {
        Optional<String> value = getRealDataValue(realData, fieldEName);
        return value.flatMap(DataProcessor::parseDoubleSafely);
    }
}
